package main

import (
	"flag"
	"fmt"
	"log"
	"os"

	"x-admin-generator/internal/config"
	"x-admin-generator/internal/generator"
	"x-admin-generator/internal/ui"
	"x-admin-generator/internal/web"
)

// @title X-Admin Generator API
// @version 1.0
// @description X-Admin 代码生成器 API 文档
// @host localhost:8081
// @BasePath /api

func main() {
	// 加载生成器配置
	if err := config.Load(); err != nil {
		log.Fatalf("加载生成器配置失败: %v", err)
	}

	var (
		modelName   = flag.String("model", "", "要生成的模型名称")
		all         = flag.Bool("all", false, "生成所有模型")
		help        = flag.Bool("help", false, "显示帮助信息")
		interactive = flag.Bool("interactive", false, "交互式模式")
		webMode     = flag.Bool("web", false, "启动Web界面")
	)
	flag.Parse()

	if *help {
		ui.ShowHelp()
		return
	}

	if *webMode {
		web.StartWebServer()
		return
	}

	// 如果没有任何参数，默认进入交互式模式
	if len(os.Args) == 1 {
		*interactive = true
	}

	if *interactive {
		ui.RunInteractiveMode()
		return
	}

	// 命令行模式
	if flag.Arg(0) != "generate" {
		fmt.Println("错误: 请使用 'generate' 命令")
		ui.ShowHelp()
		os.Exit(1)
	}

	if *all {
		generator.GenerateAllModels()
	} else if *modelName != "" {
		generator.GenerateModel(*modelName)
	} else {
		fmt.Println("错误: 请指定模型名称或使用 --all 参数")
		ui.ShowHelp()
		os.Exit(1)
	}
}